<!DOCTYPE HTML>
<!--
	Dimension by HTML5 UP
	html5up.net | @ajlkn
	Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
 <head>
  <title>
   Dimension by HTML5 UP
  </title>
  <!-- <meta charset="utf-8" /> -->
  <!-- <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" /> -->
  <meta charset="utf-8"/>
  <meta content="width=device-width,initial-scale=1.0" name="viewport"/>
  <link href="../../assets/css/article.css" rel="stylesheet"/>
  <link href="https://cdn.bootcss.com/highlight.js/9.15.8/styles/github.min.css" rel="stylesheet"/>
  <noscript>
   <link href="../../assets/css/noscript.css" rel="stylesheet"/>
  </noscript>
 </head>
 <body>
  <div id="app">
  </div>
  <!-- built files will be auto injected -->
 </body>
 <body class="is-preload">
  <!-- Wrapper -->
  <div id="wrapper">
   <!-- Main -->
   <div id="main">
    <article id="article">
     <h1 id="soul">
      Soul 源码解析（一） 概览
     </h1>
     <hr/>
     <h2 id="_1">
      简介
     </h2>
     <p>
      阅读soul的官方文档，大致了解soul的功能和相关概念
     </p>
     <h3 id="_2">
      心得
     </h3>
     <p>
      需要对网关的功能有个大致的了解，把
      <a href="https://dromara.org/zh-cn/docs/soul/user-sofa.html">
       soul官方文档
      </a>
      读两遍（第一遍通读，能看懂多少是多少，第二遍参照网关基本概念，整理一下自己所理解的soul相关概念），整理的大致如下：
     </p>
     <p>
      <img alt="" src="./picture/souloverview.png"/>
     </p>
     <p>
      大致写过网关Demo应该了解网关的大致组件，如上图的网关版本1和2：
     </p>
     <ul>
      <li>
       server ：一个服务端，用于监听请求
      </li>
      <li>
       router ：路由匹配，判断请求是否能匹配上后端服务，能匹配上就继续
      </li>
      <li>
       filter ：可以进行一些定时，比如简单的增删改查请求和响应的header内容，高阶的如限流、熔断等
      </li>
      <li>
       client ：发送请求给后台服务，并得到响应
      </li>
     </ul>
     <p>
      读下来，发现Soul的路由匹配规则是动态生成的，一个很关键，很基础的插件就是divide。这些路由的配置保存的地方计时 Soul Admin 这个模块，网关的核心模块还是 Soul Bootstrap，转发合处理还是这个来
     </p>
     <p>
      发现Soul Admin 好像还配置了相关 Filter，那可以理解 Soul Admin 为配置中心，可以配置 Router 和 Filter
     </p>
     <p>
      大致读下
      <a href="https://dromara.org/zh-cn/docs/soul/user-dataSync.html">
       数据同步
      </a>
      这部分，知道了Soul这些配置都是可以动态的
     </p>
     <p>
      利用类比，将我们之前熟悉的东西套一套，对Soul有个大致的认识即可
     </p>
     <p>
      当然，也有可能有些描述和认知是错的，但这些都是正确认识的前提，我们可以在不断的阅读研究中不断更新自己的模型（我目前也没完全搞懂Soul）
     </p>
     <p>
      就想现在我们有一张地图，可以有些地方拆迁重建了，但我们还是可以这个地图探索，前往目的地，在探索的过程中，不断地完善我们的地图
     </p>
    </article>
   </div>
   <!-- Footer -->
   <footer id="footer">
    <p class="copyright">
     © Untitled. Design:
     <a href="https://html5up.net">
      HTML5 UP
     </a>
     .
    </p>
   </footer>
  </div>
  <!-- BG -->
  <div id="bg">
  </div>
  <!-- Scripts -->
  <script src="../assets/js/jquery.min.js">
  </script>
  <script src="../assets/js/browser.min.js">
  </script>
  <script src="../assets/js/breakpoints.min.js">
  </script>
  <script src="../assets/js/util.js">
  </script>
  <script src="../assets/js/main.js">
  </script>
 </body>
</html>
